package entity;

import dao.Impl.empchange;
import lombok.Data;
import service.Impl.OrganizationServiceImpl;


import java.util.Date;
@Data
public class Employee  {
    


    private static final long serialVersionUID = 1L;

    /**
     * 员工角色常量
     */
    public static final int ROLE_EMPLOYEE = 0;        // 普通员工
    public static final int ROLE_HR_STAFF = 1;        // 人事专员
    public static final int ROLE_HR_MANAGER = 2;      // 人事经理
    public static final int ROLE_SALARY_STAFF = 3;    // 薪酬专员
    public static final int ROLE_SALARY_MANAGER = 4;  // 薪酬经理
    public static final int ROLE_GENERAL_MANAGER = 5; // 总经理

    /**
     * 员工状态常量
     */

    private Long empId;                                 // 员工ID，主键，自增

    private String empPassword;                         // 登录密码

    private String empName;                            // 员工姓名

    private Integer empGender;                         // 性别 1:男 2:女


    private Date empBirthDate;                        // 出生日期

    private String empIdcard;                         // 身份证号，唯一

    private String empPhone;                          // 手机号，唯一


    private Integer empRole;                          // 角色类型

    private String empEducation;                      // 学历
    private Long orgId;                               // 所属部门ID

    private Date empEntryDate;                        // 入职日期


    private Long salaryStandardId;                    // 薪酬标准ID

    private Integer empStatus;                        // 状态 0:离职 1:在职


    private Date empCreateTime;                       // 创建时间

    private Date empUpdateTime;                       // 更新时间

    // 在创建实体时自动设置时间
    Employee() {
        empCreateTime = new Date();
        empUpdateTime = new Date();
    }


    protected void Update() {
        empUpdateTime = new Date();
    }

    /**
     * 判断员工是否在职
     */
    public boolean isActive() {
        return empStatus != null && empStatus == 1;
    }

    /**
     * 获取员工角色名称
     */
    public String getRoleName() {
        if (empRole == null) return "未知";
        return switch (empRole) {
            case ROLE_EMPLOYEE -> "普通员工";
            case ROLE_HR_STAFF -> "人事专员";
            case ROLE_HR_MANAGER -> "人事经理";
            case ROLE_SALARY_STAFF -> "薪酬专员";
            case ROLE_SALARY_MANAGER -> "薪酬经理";
            case ROLE_GENERAL_MANAGER -> "总经理";
            default -> "未知";
        };
    }

    /**
     * 获取性别描述
     */
    public String getGenderDesc() {
        if (empGender == null) return "未知";
        return empGender == 1 ? "男" : "女";
    }

}